//package com.tezign.intelligence.mini.dam.aifamilyconsultant.config;
//
//import com.tezign.intelligence.mini.dam.aifamilyconsultant.entity.Session;
//import com.tezign.intelligence.mini.dam.aifamilyconsultant.util.AESUtil;
//import lombok.extern.slf4j.Slf4j;
//import org.aspectj.lang.JoinPoint;
//import org.aspectj.lang.annotation.AfterReturning;
//import org.aspectj.lang.annotation.Aspect;
//import org.aspectj.lang.annotation.Before;
//import org.aspectj.lang.annotation.Pointcut;
//import org.springframework.stereotype.Component;
//
//import java.util.List;
//
//@Aspect
//@Component
//@Slf4j
//public class MyBatisPlusAspect {
//
//
//	@Pointcut("execution(* com.tezign.intelligence.mini.dam.aifamilyconsultant.service.*.save*(..))")
//	public void savePointcut() {
//	}
//
//	@Pointcut("execution(* com.tezign.intelligence.mini.dam.aifamilyconsultant.service.*.update*(..))")
//	public void updatePointcut() {
//	}
//
//
//	@Before("savePointcut() || updatePointcut()")
//	public void beforeSaveOrUpdate(JoinPoint joinPoint) {
//		Object[] args = joinPoint.getArgs();
//		for (Object arg : args) {
//			session(arg);
//			if (arg instanceof List) {
//				((List<?>) arg).forEach(MyBatisPlusAspect::session);
//			}
//		}
//	}
//
//	private static void session(Object arg) {
//		if (arg instanceof Session) {
//			Session po = (Session) arg;
//			String content = po.getContent();
//			if (content != null) {
//				try {
//					po.setContent(AESUtil.encrypt(content));
//					log.info("此处对内容进行加密:content:{}", content);
//				} catch (Exception e) {
//					log.warn("{} 历史数据，忽略", content, e);
//				}
//			}
//		}
//	}
//
//
//	@AfterReturning(pointcut =
//			"execution(* com.baomidou.mybatisplus.core.mapper.BaseMapper.select*(..))"
//			, returning = "result")
//	public void afterQuery(Object result) {
//		if (result instanceof Iterable) {
//			for (Object item : (Iterable<?>) result) {
//				sessionDecrypt(item);
//			}
//		} else if (result instanceof Session) {
//			sessionDecrypt(result);
//		}
//	}
//
//	private static void sessionDecrypt(Object item) {
//		if (item instanceof Session) {
//			Session po = (Session) item;
//			String content = po.getContent();
//			if (content != null) {
//				String decrypt = AESUtil.decrypt(content);
//				try {
//					po.setContent(decrypt);
//					log.info("内容解密:content: {}", decrypt);
//				} catch (Exception e) {
//					log.warn("{} 历史数据，忽略", content, e);
//				}
//			}
//		}
//	}
//}
//
